home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_unpack.py < prev    next >
Text File  |  2005-10-18  |  3KB  |  132 lines

  1. doctests = """
  2.  
  3. Unpack tuple
  4.  
  5.     >>> t = (1, 2, 3)
  6.     >>> a, b, c = t
  7.     >>> a == 1 and b == 2 and c == 3
  8.     True
  9.  
  10. Unpack list
  11.  
  12.     >>> l = [4, 5, 6]
  13.     >>> a, b, c = l
  14.     >>> a == 4 and b == 5 and c == 6
  15.     True
  16.  
  17. Unpack implied tuple
  18.  
  19.     >>> a, b, c = 7, 8, 9
  20.     >>> a == 7 and b == 8 and c == 9
  21.     True
  22.  
  23. Unpack string... fun!
  24.  
  25.     >>> a, b, c = 'one'
  26.     >>> a == 'o' and b == 'n' and c == 'e'
  27.     True
  28.  
  29. Unpack generic sequence
  30.  
  31.     >>> class Seq:
  32.     ...     def __getitem__(self, i):
  33.     ...         if i >= 0 and i < 3: return i
  34.     ...         raise IndexError
  35.     ...
  36.     >>> a, b, c = Seq()
  37.     >>> a == 0 and b == 1 and c == 2
  38.     True
  39.  
  40. Single element unpacking, with extra syntax
  41.  
  42.     >>> st = (99,)
  43.     >>> sl = [100]
  44.     >>> a, = st
  45.     >>> a
  46.     99
  47.     >>> b, = sl
  48.     >>> b
  49.     100
  50.  
  51. Now for some failures
  52.  
  53. Unpacking non-sequence
  54.  
  55.     >>> a, b, c = 7
  56.     Traceback (most recent call last):
  57.       ...
  58.     TypeError: unpack non-sequence
  59.  
  60. Unpacking tuple of wrong size
  61.  
  62.     >>> a, b = t
  63.     Traceback (most recent call last):
  64.       ...
  65.     ValueError: too many values to unpack
  66.  
  67. Unpacking tuple of wrong size
  68.  
  69.     >>> a, b = l
  70.     Traceback (most recent call last):
  71.       ...
  72.     ValueError: too many values to unpack
  73.  
  74. Unpacking sequence too short
  75.  
  76.     >>> a, b, c, d = Seq()
  77.     Traceback (most recent call last):
  78.       ...
  79.     ValueError: need more than 3 values to unpack
  80.  
  81. Unpacking sequence too long
  82.  
  83.     >>> a, b = Seq()
  84.     Traceback (most recent call last):
  85.       ...
  86.     ValueError: too many values to unpack
  87.  
  88. Unpacking a sequence where the test for too long raises a different kind of
  89. error
  90.  
  91.     >>> class BozoError(Exception):
  92.     ...     pass
  93.     ...
  94.     >>> class BadSeq:
  95.     ...     def __getitem__(self, i):
  96.     ...         if i >= 0 and i < 3:
  97.     ...             return i
  98.     ...         elif i == 3:
  99.     ...             raise BozoError
  100.     ...         else:
  101.     ...             raise IndexError
  102.     ...
  103.  
  104. Trigger code while not expecting an IndexError (unpack sequence too long, wrong
  105. error)
  106.  
  107.     >>> a, b, c, d, e = BadSeq()
  108.     Traceback (most recent call last):
  109.       ...
  110.     BozoError
  111.  
  112. Trigger code while expecting an IndexError (unpack sequence too short, wrong
  113. error)
  114.  
  115.     >>> a, b, c = BadSeq()
  116.     Traceback (most recent call last):
  117.       ...
  118.     BozoError
  119.  
  120. """
  121.  
  122. __test__ = {'doctests' : doctests}
  123.  
  124. def test_main(verbose=False):
  125.     import sys
  126.     from test import test_support
  127.     from test import test_unpack
  128.     test_support.run_doctest(test_unpack, verbose)
  129.  
  130. if __name__ == "__main__":
  131.     test_main(verbose=True)
  132.